package com.cmz.common.api.dto;

import com.google.common.collect.Lists;
import io.swagger.annotations.ApiModel;

import java.io.Serializable;
import java.util.List;
import java.util.Objects;

/**
 * @author cmz
 * @date 2020/6/4 09:13
 */
@ApiModel
public interface TreeNode extends Serializable {
    /**
     * ID
     * @return ID
     */
    String getId();

    /**
     * 设置ID
     * @param id ID
     */
    void setId(String id);

    /**
     * 父ID
     * @return 父ID
     */
    String getPid();

    /**
     * 设置父ID
     * @param pid 父ID
     */
    void setPid(String pid);

    /**
     * 子节点集合
     * @return 子节点集合
     */
    List<TreeNode> getChildren();

    /**
     * 设置子节点集合
     * @param children 子节点集合
     */
    void setChildren(List<TreeNode> children);

    /**
     * 设置名称
     * @param name 名称
     */
    void setName(String name);

    /**
     * 添加子节点
     * @param node 节点
     */
    default void addChild(TreeNode node) {
        if (Objects.isNull(this.getChildren())) {
            this.setChildren(Lists.newArrayList());
        }
        this.getChildren().add(node);
    };
}
